This invention generally relates to computer systems such as personal computers, workstations and servers, and more particularly to computer systems that permit the addition or removal of components without powering down.
Computer servers have become essential in business environments, providing mission-critical applications, such as business databases, e-mail, and company-wide local area networks. Loss of access to such applications for even short periods of time can have enormous impact on business operations. To achieve high availability, system providers often take special measures such as incorporating component redundancy, e.g., redundant power supplies, redundant network interface cards (NICs), or redundant arrays of independent disks (RAID) storage systems.
Significant attention has recently been focused on providing high availability for the Input/Output (I/O) subsystem of computer servers. The PCI local bus (or simply, the xe2x80x9cPCI busxe2x80x9d) is widely used for I/O subsystems. The PCI bus is an industry-standard bus for connecting peripherals and other components in accordance with the PCI Local Bus Specifications, Revision 2.1, Jun. 1, 1995, (the xe2x80x9cPCI Specxe2x80x9d), which is available from the PCI Special Interest Group, Portland, Oreg., USA, and incorporated herein by reference.
Over time, peripherals may have to be repaired or upgraded with additional functionality. Historically, this often required the computer server to be powered down while the repair or upgrade was effected. The PCI Spec in its basic form did not provide for components to be connected to the PCI bus while the computer server is powered up. Such hot-plug capability was added to PCI buses conforming to the PCI Hot-Plug Specification, Revision 1.0, Oct. 6, 1997 (the xe2x80x9cPCI Hot-Plug Specxe2x80x9d), which is available from the PCI Special Interest Group, Portland, Oreg., USA, and incorporated herein by reference.
Accordingly, the PCI Hot-Plug Spec is an enhancement to the PCI Spec that allows adapter cards to be inserted into or removed from PCI bus slots at any time, even while the system is powered on, so as to provide high system availability and serviceability. An adapter card is typically a circuit board that includes chips and other electronic components electrically interconnected to add functions or resources to a computer server or other computer system into which it is installed. PCI adapter cards are designed in accordance with the PCI Spec to be plugged into a PCI-compliant slot of a PCI bus. Adapter cards can take the form of expansion cards that, for example, add memory, disk-drive controllers, video support, parallel and serial ports, internal modems, and/or network interfaces (xe2x80x9cNICsxe2x80x9d).
Generally speaking, hot-plugging is a process of inserting or removing an adapter card from a computer server or other computer system without stopping software running on the system or powering down the system as a whole, though running of certain software may be stopped, or certain hardware powered down. To achieve hot-plugging, the I/O subsystem of a server or other computer system is provided with a hot plug controller for controlling hot plugging operations, and devices (e.g., electronic switches) for isolating slots from bus signals by selectively decoupling the slots from the PCI bus during card insertion and removal. Typically, hot plug administrative software is provided as well for coordinating hot-plugging activities and interfacing with the server""s operating system (O/S), and, through a graphical user interface (gui), with a technician at a console. Each adapter card typically has an adapter driver, and the hot-plug controller has a hot plug system driver that interfaces through the server""s operating system with the hot plug administrative software.
While computer systems equipped with PCI buses having hot-plugging capability are generally suitable for their intended purposes, it would be desired to improve their capability so as to overcome certain drawbacks. For example, following hot plug insertion, malfunctioning of a newly inserted adapter card can cause serious problems, such as lost or corrupted data or hanging of the bus protocol so as to prevent completion of a bus transaction. For example, if an adapter card""s connection were to break at a PCI control signal, such as FRAME#, the card might not respond when addressed by the server""s CPU, and critical data may be lost. In extreme cases, malfunction of the newly installed adapter card can cause a system crash. It may even prevent the system from booting up again. Needless to say, such problems can interfere with diagnosis and repair of the problem adapter card. While this is true of servers regardless of whether they are hot plugging capable, in servers equipped with hot plug capability, this drawback undermines the advantages of high availability and serviceability otherwise attainable by hot plug technology.
Moreover, existing systems can have problems when a newly inserted adapter card comes on-line, i.e., is electrically connected to (and no longer isolated from) the PCI bus for bus signaling purposes. The problems in this instance are associated with the sudden change in the electrical characteristics of the bus, which can result in xe2x80x9cglitchesxe2x80x9d (i.e., electrical anomalies) on the bus. These can potentially cause the newly inserted adapter card (or another device then on the bus) to misinterpret the bus signal levels and operate erroneously. This problem is exacerbated by increased loading of devices on the bus, as occurs with the addition of a hot plug controller and adapter cards. Signals on the bus tend to degrade as they propagate from device to device on the bus; with additional devices on the bus, the signals degrade that much more. Such glitches and signal degradation may not present a significant problem, however, if the PCI bus is allowed to run at a slow enough speed for adequate signal capture under existing load conditions. For this reason, PCI buses equipped for hot plugging are generally operated today at a nominal speed of 33 MHz (i.e., in a range up to 33⅓ MHz), as defined in the PCI Spec. However, PCI buses are allowed to operate also at the higher nominal speed of 66 MHz (i.e., in a range between 33⅓ MHz and 66⅔ MHz), as defined in the PCI Spec. It would be desirable to run PCI buses equipped with hot plugging capability at the higher speed.
The invention resides in a hot plugging system having a first mechanism for selectively connecting, responsive to a first control signal, each of a plurality of slots with a primary bus, e.g., a PCI bus connected to a system bus of a computer system; and a second mechanism for connecting, responsive to a second control signal, at least one of the slots with a secondary bus, e.g., a dedicated PCI bus, or other connection interface, used for testing purposes during hot-plug insertion of an adapter card received in the at least one slot. The system can also have a controller for applying the first and second control signals to the slots so as to switch the connection of the at least one slot to the primary bus from the secondary bus after testing validates operation of the adapter card(s).
In accordance with another aspect of the invention, the hot plug controller makes the connection of the at least one slot to the primary bus in response to a BUS_IDLE signal from the host bridge that indicates when the PCI bus is idle. The BUS_IDLE signal can be generated from the FRAME and IRDY signals for the primary bus by combinational logic in the host bridge. In this way, the hot plug controller need not be connected to and load the shared lines, e.g., the FRAME and IRDY lines, of that bus. Accordingly, the primary bus may be operated, depending on conditions, at the higher permitted speeds. The hot plug controller according to this aspect of the invention is connected to the host bridge by a pair of REQUEST and GRANT lines so as to be able to gain control of the primary PCI bus, and by a BUS_IDLE signal line to indicate when the hot plug controller can connect newly inserted adapter cards to the primary bus and thereby bring them on line for normal operation of the computer system.